﻿// Copyright 2005, 2006 - Morten Nielsen (www.iter.dk)
//
// This file is part of SharpMap.
// SharpMap is free software; you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
// 
// SharpMap is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Lesser General Public License for more details.

// You should have received a copy of the GNU Lesser General Public License
// along with SharpMap; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 

using System;

namespace SharpMap.Geometries
{
    internal static class FakeSpatialOperations
    {
        internal static Geometry SimplifyRegion(Geometry region)
        {
            // TODO: perform simplification...
            return region;
        }

        internal static Geometry Union(Geometry lhs, Geometry rhs)
        {
            if (lhs == null) throw new ArgumentNullException("lhs");
            if (rhs == null) throw new ArgumentNullException("rhs");

            if (lhs.IsEmpty())
            {
                return rhs;
            }

            if (rhs.IsEmpty())
            {
                return lhs;
            }

            if (lhs.Contains(rhs))
            {
                return lhs;
            }

            if (rhs.Contains(lhs))
            {
                return rhs;
            }

            return new BoundingBox(lhs.GetBoundingBox(), rhs.GetBoundingBox()).ToGeometry();
        }

        internal static Geometry Intersection(Geometry lhs, Geometry rhs)
        {
            return BoundingBoxOperations.Intersection(lhs.GetBoundingBox(), rhs.GetBoundingBox());
        }
    }
}
